查看原文
其他

追一技术分享 | NLG技术:文本生成技术多样化应用的探索之路

小一 追一科技 2023-08-31
自然语言处理(NLP)技术通常可以分为两大类,分别是自然语言理解(NLU)和自然语言生成(NLG)。其中NLU主要指常见的文本分类、序列标注、信息抽取等任务,而NLG则包括机器翻译、对话系统、自动摘要等。随着GPT、BERT、T5等大型预训练语言模型的推广,NLU能力已经有了长足的进步,诸如GLUE、SuperGLUE等榜单不断被刷新,关于大型预训练模型的相关内容,我们已经在前面的系列文章中进行了介绍。
事实上,除了NLU技术外,NLG技术也一直在同步发展着,进步也相当明显,只不过它更加鲜为人知一些,尤其是在中文领域,很多新技术还没有得到很好的普及。
在应用上,目前NLG技术可以用来低成本快速生成文本内容。比如法律判决书的摘要,原本需要人类通读全文在进行摘要总结,现在可以借助NLG技术自动生成摘要,省时省力。又比如自动生成相似问句,用NLG技术去扩充标注数据实现新业务领域的快速冷启动,从而降低AI训练和运营本身的成本。更进一步,“看图说话”的能力也是NLG技术的一大亮点应用。针对目标图片,NLG技术可以生成相关的图片描述,在电商领域的商品描述生成以及盲人辅助场景具有实际意义。
值得指出的一点是,实际上所有的NLP任务都可以用某种方式转化为NLG任务,这一点对于实现真正的通用型NLP模型来说,意义重大。
在本文中,我们将对当前NLG技术的发展现状做一些总结,并且介绍追一科技在NLG技术中的一些探索工作。

自然语言生成(NLG)技术的现状

可能很多读者对NLG的印象停留在RNN时代,主要体现在生成结果的“语序不顺”、“语义不通”、“重复解码”等问题,以及训练所需的数据量大、训练过程费时费力等。事实上,随着Transformer模型的流行,NLG模型也逐渐转向了Transformer,并且通过大型的无监督预训练来提高生成效果,降低标注数据量要求。因此,很多最新NLG模型的输出已经具备很好的可读性,语义上基本也能达到任务需求。

任务形式

NLG模型的本质,实际上是根据输入的序列信号来生成(预测出)输出的序列信号。因此这类模型原理上是与自然语言无关的。例如它可以用来进行数学运算公式的输出、时间序列的预测等。只是自然语言恰好也是一种序列信号,因此NLG模型可以被用在自然语言的生成任务上。而关于自然语言生成任务又可以分为许多不同的细分任务,例如文本翻译、文本摘要、文本风格迁移、文本感情变换、问答生成等,这些任务都属于自然语言生成的范畴,而在具体的侧重点上则不尽相同。在前言中也提到了,从理论上来说,一切的NLP任务都可以用某种形式转化为NLG任务,例如通常的文本感情分类问题:
今天天气真好。正向
今天天气太难受了。负向
通常的感情分析会采用文本分类的方式来做,但实际上这个任务可以转化为文本生成任务:

判断下列句子的感情:今天天气真好。正向

判断下列句子的感情:今天天气太难受了。负向

然后,模型根据输入的句子来判断后面输出的词是“正向”还是“负向”,就完成了感情分析任务。这种可以将任意NLP问题转化为NLG问题的思路,让自然语言生成技术获得了更多的关注,因此近年来关于用自然语言生成去做其他类型NLP任务的方法也层出不穷,例如T5以及P-Tuning等方法。

模型架构

广义来说,NLG任务属于Sequence to Sequence(Seq2Seq)的一种,即从一个序列变换到另一个序列,其标准的架构是Encoder-Decoder模式,如下图所示:
Encoder负责对输入序列进行编码,而Decoder则利用Encoder的编码结果进行逐步地解码,从而得到预测序列,在解码的过程中,每步只得到一个token输出,并且每步都要用到前面已经解码得到的token,这样的递归解码模型称为“自回归生成模型”。在RNN时代,Encoder和Decoder主要都是LSTM等递归神经网络结构,而现在也逐渐转移到了Transformer结构。
除了标准的Encoder-Decoder外,可以用于NLG任务的还有GPT结构和UniLM结构。直观来看,GPT其实就是一个“背书”模型,通过学习大量的语料后,模型便能够背诵很多的句子,这使得我们给定了一部分上文后,GPT可以继续把下文“背”出来,这也意味着它是一个NLG模型,只不过GPT一般来说比较适合做“句子续写”任务。跟GPT类似的是UniLM,它是微软首先发表的一种NLG结构,把Encoder和Decoder统一在了一个模型中,相比GPT它能够通过训练后,做更多种类的生成任务。
此外,最新的自回归生成模型在结果上通常能让人满意,但是由于它需要递归地解码,这意味着预测阶段它需要反复地运行模型,所以它的速度会比NLU要慢很多。为此,一系列称为“非自回归生成模型”的技术也在被探索中,非自回归生成有着并行解码的特点,速度上有了很大的提升,但是在可读性和通用性方面依然有所欠缺,目前还不是NLG的主流模型。

模型规模

近年来,预训练模型的一个趋势是越做越大。关于预训练模型我们在系列的第一篇文章中已经做了相关的介绍,在这一篇文章中就不详细展开介绍了。值得一提的是,在众多的预训练模型中,实际上也有直接采用自然语言生成任务作为预训练目标的模型。换句话说,这类预训练模型本身就是一个自然语言生成模型,比较典型的代表是GPT系列以及T5。因此,在模型规模上,NLG模型的发展趋势与预训练模型一样也是越做越大。

预训练任务

当我们想要把NLG跟预训练结合起来时,就需要设计相应的预训练任务。简单来说,NLG预训练就是选择一个特定的Seq2Seq模型结构,然后无监督地构建大量训练Seq2Seq所需的“输入-输出”句子对,用来训练该Seq2Seq模型。训练完成后,我们再微调到下游的NLG任务中,以获得效果上的提升。
目前,已发表的预训练任务的设计,大体上有以下几种:
  • GPT:GPT纯粹就是无条件地“背书”,可以理解为Encoder的输入是空字符串,Decoder的输出是任意句子;

  • UniLM:在NLG部分,UniLM使用的是自然文本的上半段预测下半段来预训练;

  • BART:BART跟BERT一样,都是完形填空,只不过用Seq2Seq模型去做,Encoder输入带空的句子,Decoder输出原句子;

  • T5:T5算是BART的加强版,它将连续的多个[MASK]合并成了一个,并且Decoder只需要预测要填空的部分;

  • PEGASUS:PEGASUS主要是为摘要生成而设计的,它以最长公共子序列为指标,无监督地构建了一些伪摘要数据集来预训练。

追一科技NLG技术创新研究

追一科技在自然语言生成技术上有着持续的投入,在这一方向上我们主要聚焦在研究新的NLG技术,探索不同的NLG运用场景,以及开源贡献推动中文NLP社区发展三个方面。

NLG技术的探索与改进

在NLG技术探索方面,我们针对当前文本生成模型的训练一致性、可控性等方面进行了探索并提出了相应的改进方法。

Exposure Bias

Exposure Bias是Seq2Seq训练与预测不一致的缺陷,是Seq2Seq模型中的经典问题,至今也没有标准的解决方案。导致Exposure Bias产生主要是因为模型在训练过程中采用的是Teacher Forcing方式,如下图所示:
在训练时,每一步的输入token都是真实正确的。但在模型预测时,由于没有真实标签,因此每一步的输入都是模型前一步的预测输出,这种不一致就造成了Exposure Bias的问题。从理论上来说,Teacher Forcing在训练时给出的是当前步在已知前面序列为正确输入时的局部归一化概率,但实际上我们希望获得的是句子序列的全局归一化概率。要得到全局归一化概率,必须遍历所有可能的句子组合,但这个计算量通常来说是难以完成的。针对Exposure Bias的问题有许多研究,但目前并没有一个最优的解决方式。而我们也提出了一种非常简单的方式来缓解Exposure Bias的问题,实验显示该策略有助提升Seq2Seq模型的生成效果。具体的做法如下图所示:
具体来说,针对Decoder的输入,我们随机替换掉某些输入的词,替换的方式按照下列规则进行:
  1. 50%的概率不做改变;
  2. 50%的概率把输入序列中30%的词替换掉,替换对象为原目标序列的任意一个词。
这一方法的逻辑在于,通常seq2seq可以生成含有目标序列的大多数词组,虽然会有重复以及错位的情况,但词本身基本保持正确。因此采用随机抽取当前句子的词替换掉Decoder的输入,可以模拟这一情况,显示地将这种输入“矫正”到正确的输出上。从另一个层面来看,我们也可以认为这种加入噪声的方式减轻了局部归一化的问题,因为这种噪声让模型在训练过程中“见过”了更多的句子组合,而不仅仅只是“正确”的句子组合。我们在CSL以及LCSTS两个数据集上测试了这一方法的效果,其中CSL数据集为标题生成任务,而LCSTS则是文本摘要数据集,测试结果如下:

其中Baseline为常规训练的模型,从结果上看,该方法在CSL数据集的各项指标上均有提升,而在LCSTS上则各有优劣。

新型Copy机制

Copy机制是做自动摘要等任务时的重要组件,它要求模型学会直接从输入中Copy一些信息(比如专业名词),避免过度灵活的“创作”而导致出错。在预训练时代,传统的Copy机制显得过于臃肿,不够灵活,难以即插即用。为此,我们提出了一种相当简便的BIO Copy机制,它更加灵活、即插即用,而且比传统的Copy机制更加有效。
如上图中所示,从原文“我真的非常热爱我的祖国”到生成目标“我爱我的祖国”的过程中,其中“我”以及“我的祖国”这两个片段都是可以从原文中直接进行copy。我们设计的这种copy机制在模型进行解码时,在原本的生成任务上,会新增一个序列预测的任务。原本的生成任务是对每个token的分布进行建模,而加入序列预测任务之后则变为


其中代表了需要预测的序列目标。而
  • 代表该token是从原文中复制;
  • :代表该token是从原文中复制,并且和前一位的token组成原文中的连续片段;
  • :代表该token不是复制的
而在解码阶段,可以通过先预测BIO的序列输出来判断当前位置是否要进行copy,具体的做法如下:
  • 如果序列标签输出的是,则进行正常的token的预测;
  • 如果序列标签输出的是,则在输出token的分布时,mask掉非原句中的token;
  • 如果序列标签输出的是,则在输出token的分布时,mask掉不能与原句中对应部分组成n-gram的token;
这种新的copy机制,可以用在任意的文本生成模型中,只需要在标注的生成任务中增加一个序列标注任务即可,而不需要对原本的模型结构进行改动,是一种非常便捷的方法。

Sparse Softmax

Sparse Softmax是我们在研究中发现的一种能够有效提升生成效果的技术。在通常的Softmax中,尾部位置上输出的值非常的小并且很接近,一般只取top1作为输出。因此我们提出将传统的Softmax进行稀疏化截断,使得模型在预测的时候能够更“专注”有意义的token。我们的进一步实验还发现,它不仅能提高生成模型的效果,对于多数的分类问题也有正的收益。Sparse Softmax的具体计算方式如下:


其中是将从大到小排列后的前个元素的下标合集。因此,Sparse Softmax是在计算概率时,只保留前个,然后将后面的都置零。而则是一个可调节的超参数。

Conditional Layer Norm

在自然语言生成任务中,我们通常都希望能够对模型生成的文本内容进行某种程度上的“控制”,例如我们希望能够控制输出文本的风格、感情等。为了达到这一目的,我们提出了Conditional Layer Norm方法。Layer Norm是Transformer模型当中的一个子模块,它通过对输入的特征进行归一化,设输入特征为,Layer Norm进行如下计算:


其中为可训练的缩放与偏置参数,为元素对应相乘。而为了将条件引入生成模型当中,我们将条件信号通过两个不同矩阵投影到与一样的维度,并加到它们之上,如下图所示:
设输入的条件信号为,Conditional LN进行如下计算:


通常来说,我们都是在预训练好的模型上进行微调,因此都是被训练过的。在加入条件信号进行微调的时,可以先将进行全零初始化,以保证训练过程平滑过度

探索NLG应用场景

针对自然语言生成这种灵活的任务形式,我们探索了如何将NLG运用到各种各样的场景当中,不断拓展NLG的潜力。

自动摘要生成-2020“法研杯”夺冠

自动文本摘要的形式是给定输入的文本,模型需要生成包含输入文本关键信息的摘要内容。文本摘要技术的应用场景很多,例如文章摘要生成、会议纪要生成以及特定领域的专业文档摘要生成等。追一科技参加的2020“法研杯”司法摘要比赛就是一个典型的专业领域文档摘要生成任务。我们采用抽取+生成的方式,并运用了前面介绍的Sparse Softmax以及BIO Copy机制,最终获得了比赛的冠军。该比赛是面向法律领域裁判文书的长文本摘要生成,是国内第一个公开的长文本生成任务和数据集。我们选择它作为我们NLG技术的一个“试金石”,最终取得了让人满意的成绩,进一步肯定了我们在NLG方面的探索成果。“法研杯”的赛题是根据输入的专业性非常强的法律判决文书,生成一段包含关键性判决信息的摘要文字。我们参赛模型的具体生成效果展示如下:

上图中上部分红色的第一段为输入的法律判决文书,中间的第二段为法律专业人员编写的判决摘要,而最后一段为模型自动生成的判决摘要。将模型自动生成的摘要与专业人士编写的摘要相对比可以发现,模型自动生成的内容完整且精确地覆盖了判决文书中的关键信息,并且生成的内容通顺完整。从这个例子可以看出当前的生成模型在进行长文本摘要的能力上已经达到了非常好的表现。


相似问生成

在我们的业务场景中,经常需要带标注的数据进行语义相似度的训练。但当面对一个崭新的场景时,很可能并没有相关的标注数据,要解决这种冷启动的场景,一种方式是采用零样本学习技术(我们在系列的第一篇文章中做过介绍),另一个思路则是采用自然语言生成技术去扩充标注数据。相似问生成则正是为这个场景设计的,它的任务形式比较简单:让模型针对输入的问句,生成非常多意思相近的问句。我们采用文本生成与相似度匹配同时训练的多任务方式让模型来完成这一任务。
上图中的输入问句为“微信和支付宝哪个好?”,下面对应的是模型生成的相似问句,相似度由大到小排列。从这个例子可以看出,相似度最大的句子完全保留了原句的含义,而较小的句子则开始出现语义的发散。在实际使用当中,可以通过控制相似度的值来调整被选用的生成句子的多样性。

可控条件文本生成

可控条件生成可以运用在很多场景当中,包括对生成文本的感情控制、风格切换等。我们采用前面介绍的Conditional Layer Norm方法来进行文本感情极性以及风格的控制。在风格控制的尝试中,我们使用新闻标题作为输入,而其对应的新闻分类作为控制条件,结果展示如下:

通过控制风格标签,模型可以按照原本的标题句式生成出指定语境的标题。而另一种应用是感情迁移,目标是让模型转换输入文本的感情极性,具体示例如下:
从上面的例子可以看出,模型能够很好地保留原本的句式结构和关键信息,但改变句子的感情极性。

数学表达式生成

NLG技术不仅可以用来进行文本的生成,还可以用来生成任何字符串性质的内容,例如代码、SQL语句甚至是数学表达式。关于如何将自然语言转化为SQL语句,我们在系列的第二篇文章中做了介绍,在这里我们介绍一个有趣的NLG模型跨界应用,即尝试用Seq2Seq模型解数学应用题。主要思路是直接用Seq2Seq模型生成可执行的数学表达式。通过与预训练模型结合,能够轻松达到SOTA效果。具体结果如下:
从上面的结果可以看到,生成模型能够将简单的数学应用题转化为数学表达式,这一能力也进一步表明了NLG技术的潜力。

看图说话

看图说话任务指的是将图片输入模型,并让模型输出一段文本来描述图片的内容,这个任务也是跨模态领域的热门研究方向。我们将这个任务看作一个条件语音模型的任务,输入的条件信号则是图片编码,因此同样可以采用Conditional Layer Norm来完成该任务。我们在COCO数据集上测试了这个方法的效果,具体的生成结果如下:
可以看到,模型预测的文本可以准确的描述出图片的主要内容。

中国象棋

为了确定NLG模型的能力极限,我们还对各种“稀奇古怪”的Seq2Seq应用进行了尝试,比如AI作曲、AI下棋等。我们训练了首个用GPT下中国象棋的模型,结果表明GPT能够不错地完成象棋的开局和中局,体现了一定的棋力,这表明NLG模型已经不仅仅局限于产生NL(自然语言),实际上一切可用字符串表达出来的内容都有可能生成。用GPT下棋的主要原理是,将下棋的过程看作是棋子在棋盘坐标上的一系列移动过程,因此可以将这个过程表示为字符序列,然后让模型按照棋谱的套路进行训练。

开源共享,推动中文NLP社区发展

首创BERT+UniLM

在UniLM发布之后,它简单有效的设计确实惊艳了大家。然而,UniLM开源的预训练模型只有英文版的,中文没有可用的UniLM模型,而在当时来说,重新预训练一个中文模型成本又显得较大。
经过研究,我们发现了一个有趣的结果:直接将开源的BERT预训练模型配合UniLM的设计使用,也能明显地改善NLG的效果!也就是说,不用重新预训练一个UniLM模型,直接用UniLM加载BERT的预训练权重也能生效。我们将此结果同步到了中文社区,并放出来参考代码,得到了广大网友的尝试和肯定。
此外,这个结论多少颠覆了我们对于预训练模型的直观认知。一般来说,下游任务要跟预训练任务尽量一致,才能取得较好的效果。而我们“用UniLM加载BERT的权重”这一做法的有效性表明,预训练模型具有相当大的普适性,哪怕下游任务差异很大,加载预训练权重依然是值得的,这一结论对我们后续的预训练研究起到了很大的启示作用。

Seq2Seq式预训练

我们此前在系列的第一篇文章中详细介绍过追一科技在预训练上的相关工作,因此在这一部分我们主要介绍与自然语言生成相关的预训练模型。“BERT+UniLM”的方式在相当长一段时间内成为了我们做NLG任务的标配,通过该组合,我们可以用比较少的标注样本就可以得到相对流畅、合理的生成结果。然而技术不能固步自封,我们也一直在探究更先进的解决方法。
与此同时,业界的模型也在不断的更新迭代,如T5、PEGASUS、UniLMv2、mT5等NLG预训练模型相继发表,我们也第一时间跟进了这些最新工作。在T5模型发布之后,我们就率先训练了中文版T5,而在PEGASUS、mT5等模型发布之后,我们对它们进行了整合,训练并开源了首个Seq2Seq预训练模型T5 PEGASUS。
T5 PEGASUS是国内首个中文生成式预训练模型T5 PEGASUS,在自动摘要、问题生成多个自然语言处理任务上,达到了新高度。值得注意的是,T5 PEGASUS凭借出色的小样本学习能力,还可以帮助企业和开发者大大减轻数据标注的负担。
顾名思义,T5 PEGASUS是T5和PEGASUS的结合。其中,T5的思想是将一切NLP任务都转化为NLG任务来处理,跟最近很火的GPT3有异曲同工之妙,它代表了自然语言处理的终极理想“万事都以自然语言表达”,也成为NLG研究的重要参考方向。本次开源的模型也正是在T5的多国语言版(mT5)的基础上进行改进的;而PEGASUS是Google提出来的一种预训练方式,虽然初衷是自动摘要,但经过追一团队的尝试,它可以作为一种通用的生成式预训练任务,开拓更多的场景。
具体来说,追一技术团队以mT5为出发点,通过中文语料构建PEGASUS任务来对mT5进行继续预训练。团队还改进了中文分词器,使得它对中文更加友好,然后对训练语料进行了细致地筛选、去噪等处理。一系列操作下来,原来的“泛”而“全”的多国语言mT5逐步转变为了“专”而“精”的中文T5 PEGASUS模型。

我们在这篇文章中介绍了自然语言生成(NLG)的技术现状以及追一科技在NLG技术上的相关研究与应用探索。在模型上,我们从RNN过度到以Transformer为模型结构的预训练式生成模型,并研究探索如何让生成模型更加可控,生成的内容更加通顺可读。在应用上,我们通过模型的可控性来拓展NLG的应用场景,探索其在相似问生成、感情迁移、文本摘要等具体场景上的能力。我们认为随着NLG技术的不断成熟进步,它将为NLP技术的应用带来更多的可能性,并且朝着实现通用型NLP模型前进。

延伸阅读

更   美   好   AI   世   界

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存